The widespread availability of powerful computer equipment has drastically expanded the amount of image detail and spatial information that can be represented in digital form. Whereas in older systems images were stored as "bitmap" rasters of bilevel values, modern image generation and manipulation systems accommodate multilevel "pixmaps" in which each image picture element, or "pixel," is represented by one or more bytes that can specify entries from huge color palettes, luminance values, etc.
In sophisticated systems, digitally represented images--which may also contain user-defined graphical components, such as lines, polygons and circles--can originate from an optical scanner (in the case, primarily, of images) or a user-supplied geometric specification (in the case of graphic components). Using "raster image processor" hardware or software, the system "scan-converts" the incoming information into an imagewise array, or raster, of pixels having appropriate color values and which collectively represent the image. The two-dimensional raster geometry corresponds to the displayable width and height of the image, while the number of bits associated with each pixel in the array is called the depth. The raster is stored in a computer memory partition called the "frame buffer," the contents of which determine the instantaneous displayed image on an output device.
Ordinarily, the user obtains access to the frame buffer through high-level application software (such as a design program) that manipulates the individual pixel values in response to user commands. For example, image generation and manipulation software available even for relatively modest computer systems enables users to translate, rotate and linearly scale rasterized images. These programs "clip" graphic and image components to fit within the rectangular region defined by the pixmap; portions falling outside that region (e.g., as a result of user manipulation) are not rendered (although they may be stored in an overflow buffer). They may also provide for various "filtering" operations, which mathematically process the pixel values to obtain a desired effect (e.g., to smooth out the "staircasing" effects that can result from scan conversion).
The manner in which image-rendering tasks are shared among software modules (executed by the main central processing unit, or CPU) and specialized hardware components dedicated exclusively to image rendering depends on the required degree of performance. The most computationally demanding tasks involve manipulation of image components in a manner that reflects three-dimensional relationships. For example, if the design program permits a user to rotate a sphere in three dimensions, the program must maintain computational "awareness" of the entire surface content of the sphere even though only a portion of that content is visually presented at any one time. Perspective issues also arise, since three-dimensional manipulation affects not only the absolute content that is presented to the user but its rendered perspective as well; these are quite visible for edged graphic objects, such as cubes. Manipulation of the content so that the visible image portions make sense given the user's viewpoint requires application of mathematically intensive geometric transformations to each pixel of such objects. In systems requiring maximum performance, these operations are carried out by high-speed dedicated hardware components that manipulate the frame buffer directly, thereby relieving the main CPU of the processing burden and reducing traffic on the system bus; in lower-end systems, which stress cost-effectiveness over time performance, the computations are performed by the main CPU in accordance with appropriate software instructions, and the CPU manipulates the contents of the frame buffer.
The most advanced design systems give the user control over the surface appearance of three-dimensional objects, altering the values of pixels corresponding to object surfaces so they conform to user selections. For example, the direction and quality of illumination, as well as the character of illuminated surfaces, determine the visual appearance of an object; these parameters can be captured and computationally applied to rendered objects using an illumination model. Design systems can also allow users to add visual detail to otherwise simple surfaces (or to replace existing surface detail with new designs or images) using a technique known as "texture mapping." In this context the term "texture" broadly connotes any form of surface detail, such as an image, rather than simple surface patterns. Employing this technique, the user specifies a digitally sampled "picture," represented as a pixmap and known as a "texture map" or "texture" to be applied to the designated surface(s) of a three-dimensionally rendered object. The imaging system applies the texture using successive spatial transformations: it first applies the texture to a mathematical representation of the object as it would appear in three-dimensional space, and then projects the visible surfaces of the object onto a pixmap representing the output screen. Once again, these surface-manipulation operations ordinarily are carried out by dedicated hardware components or by the main CPU in accordance with software instructions,
This dichotomy between hardware and software solutions to execution of the various image generation and manipulation functions contributes to a wide gulf between expensive high-end systems featuring extremely fast response times and inexpensive low-end systems that perform substantially more slowly.